{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 首先构建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.applications import Xception\n",
    "\n",
    "conv_base = Xception(weights='imagenet',\n",
    "                  include_top=False,\n",
    "                  input_shape=(256, 256, 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_2 (InputLayer)            (None, 256, 256, 3)  0                                            \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv1 (Conv2D)           (None, 127, 127, 32) 864         input_2[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv1_bn (BatchNormaliza (None, 127, 127, 32) 128         block1_conv1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv1_act (Activation)   (None, 127, 127, 32) 0           block1_conv1_bn[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv2 (Conv2D)           (None, 125, 125, 64) 18432       block1_conv1_act[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv2_bn (BatchNormaliza (None, 125, 125, 64) 256         block1_conv2[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv2_act (Activation)   (None, 125, 125, 64) 0           block1_conv2_bn[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv1 (SeparableConv2 (None, 125, 125, 128 8768        block1_conv2_act[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv1_bn (BatchNormal (None, 125, 125, 128 512         block2_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv2_act (Activation (None, 125, 125, 128 0           block2_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv2 (SeparableConv2 (None, 125, 125, 128 17536       block2_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv2_bn (BatchNormal (None, 125, 125, 128 512         block2_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_5 (Conv2D)               (None, 63, 63, 128)  8192        block1_conv2_act[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block2_pool (MaxPooling2D)      (None, 63, 63, 128)  0           block2_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_5 (BatchNor (None, 63, 63, 128)  512         conv2d_5[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_13 (Add)                    (None, 63, 63, 128)  0           block2_pool[0][0]                \n",
      "                                                                 batch_normalization_5[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv1_act (Activation (None, 63, 63, 128)  0           add_13[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv1 (SeparableConv2 (None, 63, 63, 256)  33920       block3_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv1_bn (BatchNormal (None, 63, 63, 256)  1024        block3_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv2_act (Activation (None, 63, 63, 256)  0           block3_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv2 (SeparableConv2 (None, 63, 63, 256)  67840       block3_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv2_bn (BatchNormal (None, 63, 63, 256)  1024        block3_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_6 (Conv2D)               (None, 32, 32, 256)  32768       add_13[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block3_pool (MaxPooling2D)      (None, 32, 32, 256)  0           block3_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_6 (BatchNor (None, 32, 32, 256)  1024        conv2d_6[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_14 (Add)                    (None, 32, 32, 256)  0           block3_pool[0][0]                \n",
      "                                                                 batch_normalization_6[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv1_act (Activation (None, 32, 32, 256)  0           add_14[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv1 (SeparableConv2 (None, 32, 32, 728)  188672      block4_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv1_bn (BatchNormal (None, 32, 32, 728)  2912        block4_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv2_act (Activation (None, 32, 32, 728)  0           block4_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv2 (SeparableConv2 (None, 32, 32, 728)  536536      block4_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv2_bn (BatchNormal (None, 32, 32, 728)  2912        block4_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_7 (Conv2D)               (None, 16, 16, 728)  186368      add_14[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block4_pool (MaxPooling2D)      (None, 16, 16, 728)  0           block4_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_7 (BatchNor (None, 16, 16, 728)  2912        conv2d_7[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_15 (Add)                    (None, 16, 16, 728)  0           block4_pool[0][0]                \n",
      "                                                                 batch_normalization_7[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv1_act (Activation (None, 16, 16, 728)  0           add_15[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block5_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block5_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv2_act (Activation (None, 16, 16, 728)  0           block5_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block5_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block5_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv3_act (Activation (None, 16, 16, 728)  0           block5_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block5_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block5_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_16 (Add)                    (None, 16, 16, 728)  0           block5_sepconv3_bn[0][0]         \n",
      "                                                                 add_15[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv1_act (Activation (None, 16, 16, 728)  0           add_16[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block6_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block6_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv2_act (Activation (None, 16, 16, 728)  0           block6_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block6_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block6_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv3_act (Activation (None, 16, 16, 728)  0           block6_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block6_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block6_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_17 (Add)                    (None, 16, 16, 728)  0           block6_sepconv3_bn[0][0]         \n",
      "                                                                 add_16[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv1_act (Activation (None, 16, 16, 728)  0           add_17[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block7_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block7_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv2_act (Activation (None, 16, 16, 728)  0           block7_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block7_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block7_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv3_act (Activation (None, 16, 16, 728)  0           block7_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block7_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block7_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_18 (Add)                    (None, 16, 16, 728)  0           block7_sepconv3_bn[0][0]         \n",
      "                                                                 add_17[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv1_act (Activation (None, 16, 16, 728)  0           add_18[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block8_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block8_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv2_act (Activation (None, 16, 16, 728)  0           block8_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block8_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block8_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv3_act (Activation (None, 16, 16, 728)  0           block8_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block8_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block8_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_19 (Add)                    (None, 16, 16, 728)  0           block8_sepconv3_bn[0][0]         \n",
      "                                                                 add_18[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv1_act (Activation (None, 16, 16, 728)  0           add_19[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block9_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block9_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv2_act (Activation (None, 16, 16, 728)  0           block9_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block9_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block9_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv3_act (Activation (None, 16, 16, 728)  0           block9_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block9_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block9_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_20 (Add)                    (None, 16, 16, 728)  0           block9_sepconv3_bn[0][0]         \n",
      "                                                                 add_19[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_20[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block10_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block10_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv2_act (Activatio (None, 16, 16, 728)  0           block10_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv2 (SeparableConv (None, 16, 16, 728)  536536      block10_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv2_bn (BatchNorma (None, 16, 16, 728)  2912        block10_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv3_act (Activatio (None, 16, 16, 728)  0           block10_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv3 (SeparableConv (None, 16, 16, 728)  536536      block10_sepconv3_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv3_bn (BatchNorma (None, 16, 16, 728)  2912        block10_sepconv3[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_21 (Add)                    (None, 16, 16, 728)  0           block10_sepconv3_bn[0][0]        \n",
      "                                                                 add_20[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_21[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block11_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block11_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv2_act (Activatio (None, 16, 16, 728)  0           block11_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv2 (SeparableConv (None, 16, 16, 728)  536536      block11_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv2_bn (BatchNorma (None, 16, 16, 728)  2912        block11_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv3_act (Activatio (None, 16, 16, 728)  0           block11_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv3 (SeparableConv (None, 16, 16, 728)  536536      block11_sepconv3_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv3_bn (BatchNorma (None, 16, 16, 728)  2912        block11_sepconv3[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_22 (Add)                    (None, 16, 16, 728)  0           block11_sepconv3_bn[0][0]        \n",
      "                                                                 add_21[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_22[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block12_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block12_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv2_act (Activatio (None, 16, 16, 728)  0           block12_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv2 (SeparableConv (None, 16, 16, 728)  536536      block12_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv2_bn (BatchNorma (None, 16, 16, 728)  2912        block12_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv3_act (Activatio (None, 16, 16, 728)  0           block12_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv3 (SeparableConv (None, 16, 16, 728)  536536      block12_sepconv3_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv3_bn (BatchNorma (None, 16, 16, 728)  2912        block12_sepconv3[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_23 (Add)                    (None, 16, 16, 728)  0           block12_sepconv3_bn[0][0]        \n",
      "                                                                 add_22[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_23[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block13_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block13_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv2_act (Activatio (None, 16, 16, 728)  0           block13_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv2 (SeparableConv (None, 16, 16, 1024) 752024      block13_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv2_bn (BatchNorma (None, 16, 16, 1024) 4096        block13_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_8 (Conv2D)               (None, 8, 8, 1024)   745472      add_23[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block13_pool (MaxPooling2D)     (None, 8, 8, 1024)   0           block13_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_8 (BatchNor (None, 8, 8, 1024)   4096        conv2d_8[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_24 (Add)                    (None, 8, 8, 1024)   0           block13_pool[0][0]               \n",
      "                                                                 batch_normalization_8[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv1 (SeparableConv (None, 8, 8, 1536)   1582080     add_24[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv1_bn (BatchNorma (None, 8, 8, 1536)   6144        block14_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv1_act (Activatio (None, 8, 8, 1536)   0           block14_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv2 (SeparableConv (None, 8, 8, 2048)   3159552     block14_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv2_bn (BatchNorma (None, 8, 8, 2048)   8192        block14_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv2_act (Activatio (None, 8, 8, 2048)   0           block14_sepconv2_bn[0][0]        \n",
      "==================================================================================================\n",
      "Total params: 20,861,480\n",
      "Trainable params: 20,806,952\n",
      "Non-trainable params: 54,528\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "conv_base.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Dropout, Flatten\n",
    "\n",
    "model = Sequential()\n",
    "model.add(conv_base)\n",
    "model.add(Flatten())\n",
    "model.add(Dense(512, activation='relu'))\n",
    "model.add(Dropout(0.1))\n",
    "model.add(Dense(256, activation='relu'))\n",
    "model.add(Dropout(0.1))\n",
    "model.add(Dense(133, activation='softmax'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "xception (Model)             (None, 8, 8, 2048)        20861480  \n",
      "_________________________________________________________________\n",
      "flatten_2 (Flatten)          (None, 131072)            0         \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 512)               67109376  \n",
      "_________________________________________________________________\n",
      "dropout_3 (Dropout)          (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dense_5 (Dense)              (None, 256)               131328    \n",
      "_________________________________________________________________\n",
      "dropout_4 (Dropout)          (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 133)               34181     \n",
      "=================================================================\n",
      "Total params: 88,136,365\n",
      "Trainable params: 88,081,837\n",
      "Non-trainable params: 54,528\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This is the number of trainable weights before freezing the conv base: 160\n"
     ]
    }
   ],
   "source": [
    "print('This is the number of trainable weights '\n",
    "      'before freezing the conv base:', len(model.trainable_weights))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "conv_base.trainable = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This is the number of trainable weights after freezing the conv base: 6\n"
     ]
    }
   ],
   "source": [
    "print('This is the number of trainable weights '\n",
    "      'after freezing the conv base:', len(model.trainable_weights))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras import optimizers\n",
    "model.compile(loss='categorical_crossentropy',\n",
    "              optimizer=optimizers.RMSprop(lr=2e-5),\n",
    "              metrics=['acc'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 接下来进行数据增强"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "\n",
    "base_dir = './dogImages'\n",
    "\n",
    "train_dir      = os.path.join(base_dir, 'train')\n",
    "validation_dir = os.path.join(base_dir, 'valid')\n",
    "test_dir       = os.path.join(base_dir, 'test')\n",
    "pre_dir        = os.path.join(base_dir, 'pre')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 6680 images belonging to 133 classes.\n",
      "Found 835 images belonging to 133 classes.\n",
      "Found 836 images belonging to 133 classes.\n",
      "Found 2 images belonging to 2 classes.\n"
     ]
    }
   ],
   "source": [
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "\n",
    "train_datagen = ImageDataGenerator(\n",
    "      rescale=1./255,\n",
    "      rotation_range=40,\n",
    "      width_shift_range=0.2,\n",
    "      height_shift_range=0.2,\n",
    "      shear_range=0.2,\n",
    "      zoom_range=0.2,\n",
    "      horizontal_flip=True,\n",
    "      fill_mode='nearest')\n",
    "\n",
    "# Note that the validation data should not be augmented!\n",
    "validation_datagen = ImageDataGenerator(rescale=1./255)\n",
    "test_datagen       = ImageDataGenerator(rescale=1./255)\n",
    "# pre_datagen        = ImageDataGenerator(rescale=1./255)\n",
    "\n",
    "train_generator = train_datagen.flow_from_directory(\n",
    "        train_dir,                # This is the target directory\n",
    "        target_size=(256, 256),   # All images will be resized to 256x256\n",
    "        batch_size=32,            # Since we use binary_crossentropy loss, we need binary labels\n",
    "        class_mode='categorical')\n",
    "\n",
    "validation_generator = validation_datagen.flow_from_directory(\n",
    "        validation_dir,\n",
    "        target_size=(256, 256),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical')\n",
    "\n",
    "test_generator = test_datagen.flow_from_directory(\n",
    "        test_dir,\n",
    "        target_size=(256, 256),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical')\n",
    "\n",
    "# pre_generator = pre_datagen.flow_from_directory(\n",
    "#         pre_dir,\n",
    "#         target_size = (256,256),\n",
    "#         batch_size=32,\n",
    "#         class_mode='categorical')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 进行模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/30\n",
      " - 73s - loss: 4.1831 - acc: 0.1753 - val_loss: 1.8191 - val_acc: 0.5950\n",
      "\n",
      "Epoch 00001: val_loss improved from inf to 1.81909, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 2/30\n",
      " - 67s - loss: 2.7122 - acc: 0.4466 - val_loss: 1.0255 - val_acc: 0.7291\n",
      "\n",
      "Epoch 00002: val_loss improved from 1.81909 to 1.02555, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 3/30\n",
      " - 65s - loss: 2.0272 - acc: 0.5564 - val_loss: 0.8274 - val_acc: 0.7710\n",
      "\n",
      "Epoch 00003: val_loss improved from 1.02555 to 0.82741, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 4/30\n",
      " - 65s - loss: 1.7679 - acc: 0.5941 - val_loss: 0.7702 - val_acc: 0.7894\n",
      "\n",
      "Epoch 00004: val_loss improved from 0.82741 to 0.77016, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 5/30\n",
      " - 67s - loss: 1.5654 - acc: 0.6286 - val_loss: 0.7046 - val_acc: 0.7884\n",
      "\n",
      "Epoch 00005: val_loss improved from 0.77016 to 0.70459, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 6/30\n",
      " - 66s - loss: 1.3692 - acc: 0.6643 - val_loss: 0.7048 - val_acc: 0.8093\n",
      "\n",
      "Epoch 00006: val_loss did not improve from 0.70459\n",
      "Epoch 7/30\n",
      " - 66s - loss: 1.2712 - acc: 0.6826 - val_loss: 0.6346 - val_acc: 0.8241\n",
      "\n",
      "Epoch 00007: val_loss improved from 0.70459 to 0.63459, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 8/30\n",
      " - 67s - loss: 1.2177 - acc: 0.6980 - val_loss: 0.6484 - val_acc: 0.8241\n",
      "\n",
      "Epoch 00008: val_loss did not improve from 0.63459\n",
      "Epoch 9/30\n",
      " - 65s - loss: 1.1478 - acc: 0.7075 - val_loss: 0.6476 - val_acc: 0.8383\n",
      "\n",
      "Epoch 00009: val_loss did not improve from 0.63459\n",
      "Epoch 10/30\n",
      " - 67s - loss: 1.1417 - acc: 0.7044 - val_loss: 0.6288 - val_acc: 0.8226\n",
      "\n",
      "Epoch 00010: val_loss improved from 0.63459 to 0.62882, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 11/30\n",
      " - 66s - loss: 1.0573 - acc: 0.7224 - val_loss: 0.6569 - val_acc: 0.8287\n",
      "\n",
      "Epoch 00011: val_loss did not improve from 0.62882\n",
      "Epoch 12/30\n",
      " - 68s - loss: 1.0284 - acc: 0.7260 - val_loss: 0.6411 - val_acc: 0.8312\n",
      "\n",
      "Epoch 00012: val_loss did not improve from 0.62882\n",
      "Epoch 13/30\n",
      " - 76s - loss: 1.0140 - acc: 0.7327 - val_loss: 0.6272 - val_acc: 0.8487\n",
      "\n",
      "Epoch 00013: val_loss improved from 0.62882 to 0.62724, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 14/30\n",
      " - 70s - loss: 0.9569 - acc: 0.7485 - val_loss: 0.6370 - val_acc: 0.8511\n",
      "\n",
      "Epoch 00014: val_loss did not improve from 0.62724\n",
      "Epoch 15/30\n",
      " - 68s - loss: 0.9617 - acc: 0.7386 - val_loss: 0.7118 - val_acc: 0.8256\n",
      "\n",
      "Epoch 00015: val_loss did not improve from 0.62724\n",
      "Epoch 16/30\n",
      " - 67s - loss: 0.9018 - acc: 0.7598 - val_loss: 0.6510 - val_acc: 0.8437\n",
      "\n",
      "Epoch 00016: val_loss did not improve from 0.62724\n",
      "Epoch 17/30\n",
      " - 67s - loss: 0.8933 - acc: 0.7505 - val_loss: 0.6223 - val_acc: 0.8276\n",
      "\n",
      "Epoch 00017: val_loss improved from 0.62724 to 0.62227, saving model to dogClassify.pretrained.augmentation.model.weights.best.hdf5\n",
      "Epoch 18/30\n",
      " - 67s - loss: 0.8947 - acc: 0.7564 - val_loss: 0.6354 - val_acc: 0.8317\n",
      "\n",
      "Epoch 00018: val_loss did not improve from 0.62227\n",
      "Epoch 19/30\n",
      " - 67s - loss: 0.8482 - acc: 0.7690 - val_loss: 0.6889 - val_acc: 0.8465\n",
      "\n",
      "Epoch 00019: val_loss did not improve from 0.62227\n",
      "Epoch 20/30\n",
      " - 67s - loss: 0.8244 - acc: 0.7738 - val_loss: 0.6829 - val_acc: 0.8497\n",
      "\n",
      "Epoch 00020: val_loss did not improve from 0.62227\n",
      "Epoch 21/30\n",
      " - 67s - loss: 0.7977 - acc: 0.7827 - val_loss: 0.6615 - val_acc: 0.8357\n",
      "\n",
      "Epoch 00021: val_loss did not improve from 0.62227\n",
      "Epoch 22/30\n",
      " - 67s - loss: 0.7740 - acc: 0.7913 - val_loss: 0.6554 - val_acc: 0.8460\n",
      "\n",
      "Epoch 00022: val_loss did not improve from 0.62227\n",
      "Epoch 23/30\n",
      " - 71s - loss: 0.7691 - acc: 0.7840 - val_loss: 0.7097 - val_acc: 0.8362\n",
      "\n",
      "Epoch 00023: val_loss did not improve from 0.62227\n",
      "Epoch 24/30\n",
      " - 67s - loss: 0.7343 - acc: 0.7939 - val_loss: 0.6558 - val_acc: 0.8457\n",
      "\n",
      "Epoch 00024: val_loss did not improve from 0.62227\n",
      "Epoch 25/30\n",
      " - 67s - loss: 0.7449 - acc: 0.7904 - val_loss: 0.6725 - val_acc: 0.8470\n",
      "\n",
      "Epoch 00025: val_loss did not improve from 0.62227\n",
      "Epoch 26/30\n",
      " - 67s - loss: 0.7165 - acc: 0.7993 - val_loss: 0.6609 - val_acc: 0.8432\n",
      "\n",
      "Epoch 00026: val_loss did not improve from 0.62227\n",
      "Epoch 27/30\n",
      " - 67s - loss: 0.7000 - acc: 0.8005 - val_loss: 0.6818 - val_acc: 0.8429\n",
      "\n",
      "Epoch 00027: val_loss did not improve from 0.62227\n",
      "Epoch 28/30\n",
      " - 69s - loss: 0.7375 - acc: 0.7906 - val_loss: 0.6343 - val_acc: 0.8412\n",
      "\n",
      "Epoch 00028: val_loss did not improve from 0.62227\n",
      "Epoch 29/30\n",
      " - 66s - loss: 0.6984 - acc: 0.8091 - val_loss: 0.6980 - val_acc: 0.8357\n",
      "\n",
      "Epoch 00029: val_loss did not improve from 0.62227\n",
      "Epoch 30/30\n",
      " - 66s - loss: 0.7169 - acc: 0.8014 - val_loss: 0.6380 - val_acc: 0.8378\n",
      "\n",
      "Epoch 00030: val_loss did not improve from 0.62227\n"
     ]
    }
   ],
   "source": [
    "from keras.callbacks import ModelCheckpoint   \n",
    "\n",
    "#为了解决一个bug，OSError\n",
    "from PIL import ImageFile\n",
    "ImageFile.LOAD_TRUNCATED_IMAGES = True\n",
    "\n",
    "checkpointer = ModelCheckpoint(filepath='dogClassify.pretrained.augmentation.model.weights.best.hdf5', \n",
    "                               verbose=1, \n",
    "                               save_best_only=True)\n",
    "history = model.fit_generator(\n",
    "      train_generator,\n",
    "      steps_per_epoch=128,\n",
    "      epochs=30,\n",
    "      validation_data=validation_generator,\n",
    "      validation_steps=64, \n",
    "      callbacks=[checkpointer], \n",
    "      verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.load_weights('dogClassify.pretrained.augmentation.model.weights.best.hdf5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 将模型训练过程进行可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt \n",
    "acc = history.history['acc']\n",
    "val_acc = history.history['val_acc']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "epochs = range(len(acc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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GDCAQw45hE6dOu1ZLy0tjVTHt771LRYvXlxtmQceeIDCfQ02j+mEqohUqbAQxoyBrVvD+ooVYR1g5Mja1dmuXTvmzJkDwG233UbLli35wQ9+UKGMu+PuNGiQuv35yCOP1Lif733ve7ULMCbUcheRKt18897EXm7r1rA905YuXUrfvn35zne+w8CBA1m7di1jxoyhoKCAPn36cPvtt+8pO3jwYObMmUNZWRmtW7dm3Lhx9O/fnxNOOIF169YBcMsttzB+/Pg95ceNG8egQYM44ogjeOONNwDYsmULF154If3792fEiBEUFBTs+eJJdustU3n4AAANb0lEQVStt3Lcccftic89zHr+3nvvcfrpp9O/f38GDhzI8uXLAbj77rs5+uij6d+/Pzdn482KQMldRKq0cmV62/fVwoUL+fa3v80777xDp06d+PnPf05RURFz585l6tSpLFy48HOv2bhxI6eccgpz587lhBNO4OGHH05Zt7vz9ttv84tf/GLPF8X999/PIYccwty5cxk3bhzvvPNOytded911zJo1i/nz57Nx40ZefPFFAEaMGMH3v/995s6dyxtvvEHHjh2ZMmUKL7zwAm+//TZz587lxhtvzNC7kx4ldxGpUlU3TMvWjdR69uzJcccdt2f9iSeeYODAgQwcOJBFixalTO7NmjVj6NChABx77LF7Ws+VXXDBBZ8r8/rrr3PJJZcA0L9/f/r06ZPytdOnT2fQoEH079+fV199lQULFrBhwwY+/vhjzjvvPCBcdNS8eXOmTZvGFVdcQbNmzQBo27Zt+m9EBii5i0iV7roLmjevuK1587A9G1q0aLHn8ZIlS/j1r3/Nyy+/zLx58xgyZEjKcd+NGzfe87hhw4aUlZWlrLtJkyafK1PevVKdrVu3MnbsWCZPnsy8efO44oor9sSRariiu9eJoaZK7iJSpZEjYcIE6NYNzMLfCRNqfzI1HZs2baJVq1YceOCBrF27lpdeeinj+xg8eDCTJk0CYP78+Sl/GWzbto0GDRrQvn17PvvsM5566ikA2rRpQ/v27ZkyZQoQLg7bunUrZ599Nn/605/Ytm0bAJ988knG445Co2VEpFojR+6fZF7ZwIED6d27N3379uXwww/nxBNPzPg+rrnmGr75zW/Sr18/Bg4cSN++fTnooIMqlGnXrh2XX345ffv2pVu3bhx//PF7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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xt4FdW9//H3F4hyl6sVuQVrf6ggQkgRH0AQPRa13m8g1stRqVZPtZ5zfvVYa9WjPVY91mL92dJWayUVfbRYaqVWKxa1LRgQEEQELQqCEJCrgBr4/v5YkxDCTjI72Ts7e/J5Pc88e2b22jPf2ZN8Z+01M2vM3RERkWRpkesAREQk85TcRUQSSMldRCSBlNxFRBJIyV1EJIGU3EVEEkjJXVIys5Zmtt3M+mSybC6Z2eFmlvFrf83sJDNbWWV6mZmNilO2Huv6pZndXN/P17LcO83s15leruROq1wHIJlhZturTLYFPgN2R9PfdPeSdJbn7ruB9pku2xy4e/9MLMfMrgQudvcxVZZ9ZSaWLcmn5J4Q7l6ZXKOa4ZXu/lJN5c2slbuXN0ZsItL41CzTTEQ/u580syfMbBtwsZkdZ2b/MLPNZrbWzCabWUFUvpWZuZkVRtNTo/dnmtk2M/u7mfVLt2z0/ilm9q6ZbTGzB83sdTO7rIa448T4TTNbYWabzGxylc+2NLMfm9lGM3sPGFfL93OLmU2rNu8hM7s/Gr/SzJZG2/NeVKuuaVmrzWxMNN7WzB6PYlsCDE2x3vej5S4xszOi+UcDPwVGRU1eG6p8t7dV+fzV0bZvNLNnzaxHnO+mLmZ2VhTPZjN72cz6V3nvZjNbY2ZbzeydKts63MzmR/PXmdm9cdcnWeDuGhI2ACuBk6rNuxP4HDidcFBvA3wVOJbwC+4w4F3guqh8K8CBwmh6KrABKAYKgCeBqfUoezCwDTgzeu9G4Avgshq2JU6MvwcOAgqBTyq2HbgOWAL0AroCs8OffMr1HAZsB9pVWfZ6oDiaPj0qY8BYYCcwKHrvJGBllWWtBsZE4/cBrwCdgb7A29XKXgD0iPbJRVEMX4reuxJ4pVqcU4HbovGToxgHA62B/we8HOe7SbH9dwK/jsaPjOIYG+2jm6PvvQAYAHwAHBKV7QccFo2/AUyIxjsAx+b6f6E5D6q5Ny+vufsf3H2Pu+909zfcfY67l7v7+8AUYHQtn3/a3Uvd/QughJBU0i37dWCBu/8+eu/HhANBSjFj/B933+LuKwmJtGJdFwA/dvfV7r4RuLuW9bwPLCYcdAD+Bdjs7qXR+39w9/c9eBn4C5DypGk1FwB3uvsmd/+AUBuvut6n3H1ttE9+SzgwF8dYLsBE4JfuvsDddwE3AaPNrFeVMjV9N7UZD8xw95ejfXQ30JFwkC0nHEgGRE17/4y+OwgH6a+YWVd33+buc2Juh2SBknvzsqrqhJkdYWZ/NLOPzWwrcAfQrZbPf1xlfAe1n0StqeyhVeNwdyfUdFOKGWOsdRFqnLX5LTAhGr+IcFCqiOPrZjbHzD4xs82EWnNt31WFHrXFYGaXmdnCqPljM3BEzOVC2L7K5bn7VmAT0LNKmXT2WU3L3UPYRz3dfRnw74T9sD5q5jskKno5cBSwzMzmmtmpMbdDskDJvXmpfhngzwm11cPdvSNwK6HZIZvWEppJADAzY99kVF1DYlwL9K4yXdelmk8CJ0U13zMJyR4zawM8DfwPocmkE/DnmHF8XFMMZnYY8DBwDdA1Wu47VZZb12WbawhNPRXL60Bo/vkoRlzpLLcFYZ99BODuU919BKFJpiXhe8Hdl7n7eELT2/8Cz5hZ6wbGIvWk5N68dQC2AJ+a2ZHANxthnc8BRWZ2upm1Aq4HumcpxqeAG8ysp5l1Bb5bW2F3Xwe8BjwKLHP35dFbBwIHAGXAbjP7OnBiGjHcbGadLNwHcF2V99oTEngZ4Th3JaHmXmEd0KviBHIKTwBXmNkgMzuQkGRfdfcafwmlEfMZZjYmWvd/Es6TzDGzI83shGh9O6NhN2EDvmFm3aKa/pZo2/Y0MBapJyX35u3fgUsJ/7g/J9RcsypKoBcC9wMbgS8DbxKuy890jA8T2sbfIpzsezrGZ35LOEH62yoxbwa+A0wnnJQ8j3CQiuMHhF8QK4GZwG+qLHcRMBmYG5U5AqjaTv0isBxYZ2ZVm1cqPv8nQvPI9OjzfQjt8A3i7ksI3/nDhAPPOOCMqP39QOAewnmSjwm/FG6JPnoqsNTC1Vj3ARe6++cNjUfqx0KTp0humFlLQjPAee7+aq7jEUkK1dyl0ZnZODM7KPpp/33CFRhzcxyWSKIouUsujATeJ/y0Hwec5e41NcuISD2oWUZEJIFUcxcRSaCcdRzWrVs3LywszNXqRUTy0rx58za4e22XDwM5TO6FhYWUlpbmavUiInnJzOq60xpQs4yISCIpuYuIJJCSu4hIAulJTCLNxBdffMHq1avZtWtXrkORGFq3bk2vXr0oKKipa6HaKbmLNBOrV6+mQ4cOFBYWEjrjlKbK3dm4cSOrV6+mX79+dX8ghbxqlikpgcJCaNEivJak9chnkeZt165ddO3aVYk9D5gZXbt2bdCvrLypuZeUwKRJsGNHmP7ggzANMLHB/eCJNA9K7Pmjofsqb2ru3/ve3sReYceOMF9ERPaVN8n9ww/Tmy8iTcvGjRsZPHgwgwcP5pBDDqFnz56V059/Hq/b98svv5xly5bVWuahhx6iJENttiNHjmTBggUZWVZjy5tmmT59QlNMqvkiknklJeGX8Ycfhv+zu+5qWBNo165dKxPlbbfdRvv27fmP//iPfcq4O+5Oixap652PPvponeu59tpr6x9kguRNzf2uu6Bt233ntW0b5otIZlWc4/rgA3Dfe44rGxcxrFixgoEDB3L11VdTVFTE2rVrmTRpEsXFxQwYMIA77rijsmxFTbq8vJxOnTpx0003ccwxx3Dcccexfv16AG655RYeeOCByvI33XQTw4YNo3///vztb38D4NNPP+Xcc8/lmGOOYcKECRQXF9dZQ586dSpHH300AwcO5OabbwagvLycb3zjG5XzJ0+eDMCPf/xjjjrqKI455hguvvjijH9nceRNcp84EaZMgb59wSy8Tpmik6ki2dDY57jefvttrrjiCt5880169uzJ3XffTWlpKQsXLuTFF1/k7bff3u8zW7ZsYfTo0SxcuJDjjjuORx55JOWy3Z25c+dy7733Vh4oHnzwQQ455BAWLlzITTfdxJtvvllrfKtXr+aWW25h1qxZvPnmm7z++us899xzzJs3jw0bNvDWW2+xePFiLrnkEgDuueceFixYwMKFC/npT3/awG+nfvImuUNI5CtXwp494VWJXSQ7Gvsc15e//GW++tWvVk4/8cQTFBUVUVRUxNKlS1Mm9zZt2nDKKacAMHToUFauXJly2eecc85+ZV577TXGjx8PwDHHHMOAAQNqjW/OnDmMHTuWbt26UVBQwEUXXcTs2bM5/PDDWbZsGddffz0vvPACBx10EAADBgzg4osvpqSkpN43ITVUXiV3EWkcNZ3LytY5rnbt2lWO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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(epochs, acc, 'bo', label='Training acc')\n",
    "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 进行模型微调"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            (None, 256, 256, 3)  0                                            \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv1 (Conv2D)           (None, 127, 127, 32) 864         input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv1_bn (BatchNormaliza (None, 127, 127, 32) 128         block1_conv1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv1_act (Activation)   (None, 127, 127, 32) 0           block1_conv1_bn[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv2 (Conv2D)           (None, 125, 125, 64) 18432       block1_conv1_act[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv2_bn (BatchNormaliza (None, 125, 125, 64) 256         block1_conv2[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block1_conv2_act (Activation)   (None, 125, 125, 64) 0           block1_conv2_bn[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv1 (SeparableConv2 (None, 125, 125, 128 8768        block1_conv2_act[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv1_bn (BatchNormal (None, 125, 125, 128 512         block2_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv2_act (Activation (None, 125, 125, 128 0           block2_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv2 (SeparableConv2 (None, 125, 125, 128 17536       block2_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block2_sepconv2_bn (BatchNormal (None, 125, 125, 128 512         block2_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_1 (Conv2D)               (None, 63, 63, 128)  8192        block1_conv2_act[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block2_pool (MaxPooling2D)      (None, 63, 63, 128)  0           block2_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_1 (BatchNor (None, 63, 63, 128)  512         conv2d_1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_1 (Add)                     (None, 63, 63, 128)  0           block2_pool[0][0]                \n",
      "                                                                 batch_normalization_1[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv1_act (Activation (None, 63, 63, 128)  0           add_1[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv1 (SeparableConv2 (None, 63, 63, 256)  33920       block3_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv1_bn (BatchNormal (None, 63, 63, 256)  1024        block3_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv2_act (Activation (None, 63, 63, 256)  0           block3_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv2 (SeparableConv2 (None, 63, 63, 256)  67840       block3_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block3_sepconv2_bn (BatchNormal (None, 63, 63, 256)  1024        block3_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_2 (Conv2D)               (None, 32, 32, 256)  32768       add_1[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block3_pool (MaxPooling2D)      (None, 32, 32, 256)  0           block3_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_2 (BatchNor (None, 32, 32, 256)  1024        conv2d_2[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_2 (Add)                     (None, 32, 32, 256)  0           block3_pool[0][0]                \n",
      "                                                                 batch_normalization_2[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv1_act (Activation (None, 32, 32, 256)  0           add_2[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv1 (SeparableConv2 (None, 32, 32, 728)  188672      block4_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv1_bn (BatchNormal (None, 32, 32, 728)  2912        block4_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv2_act (Activation (None, 32, 32, 728)  0           block4_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv2 (SeparableConv2 (None, 32, 32, 728)  536536      block4_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block4_sepconv2_bn (BatchNormal (None, 32, 32, 728)  2912        block4_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_3 (Conv2D)               (None, 16, 16, 728)  186368      add_2[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block4_pool (MaxPooling2D)      (None, 16, 16, 728)  0           block4_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_3 (BatchNor (None, 16, 16, 728)  2912        conv2d_3[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_3 (Add)                     (None, 16, 16, 728)  0           block4_pool[0][0]                \n",
      "                                                                 batch_normalization_3[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv1_act (Activation (None, 16, 16, 728)  0           add_3[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block5_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block5_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv2_act (Activation (None, 16, 16, 728)  0           block5_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block5_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block5_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv3_act (Activation (None, 16, 16, 728)  0           block5_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block5_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block5_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block5_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_4 (Add)                     (None, 16, 16, 728)  0           block5_sepconv3_bn[0][0]         \n",
      "                                                                 add_3[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv1_act (Activation (None, 16, 16, 728)  0           add_4[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block6_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block6_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv2_act (Activation (None, 16, 16, 728)  0           block6_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block6_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block6_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv3_act (Activation (None, 16, 16, 728)  0           block6_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block6_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block6_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block6_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_5 (Add)                     (None, 16, 16, 728)  0           block6_sepconv3_bn[0][0]         \n",
      "                                                                 add_4[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv1_act (Activation (None, 16, 16, 728)  0           add_5[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block7_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block7_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv2_act (Activation (None, 16, 16, 728)  0           block7_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block7_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block7_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv3_act (Activation (None, 16, 16, 728)  0           block7_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block7_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block7_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block7_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_6 (Add)                     (None, 16, 16, 728)  0           block7_sepconv3_bn[0][0]         \n",
      "                                                                 add_5[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv1_act (Activation (None, 16, 16, 728)  0           add_6[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block8_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block8_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv2_act (Activation (None, 16, 16, 728)  0           block8_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block8_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block8_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv3_act (Activation (None, 16, 16, 728)  0           block8_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block8_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block8_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block8_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_7 (Add)                     (None, 16, 16, 728)  0           block8_sepconv3_bn[0][0]         \n",
      "                                                                 add_6[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv1_act (Activation (None, 16, 16, 728)  0           add_7[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv1 (SeparableConv2 (None, 16, 16, 728)  536536      block9_sepconv1_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv1_bn (BatchNormal (None, 16, 16, 728)  2912        block9_sepconv1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv2_act (Activation (None, 16, 16, 728)  0           block9_sepconv1_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv2 (SeparableConv2 (None, 16, 16, 728)  536536      block9_sepconv2_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv2_bn (BatchNormal (None, 16, 16, 728)  2912        block9_sepconv2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv3_act (Activation (None, 16, 16, 728)  0           block9_sepconv2_bn[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv3 (SeparableConv2 (None, 16, 16, 728)  536536      block9_sepconv3_act[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block9_sepconv3_bn (BatchNormal (None, 16, 16, 728)  2912        block9_sepconv3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "add_8 (Add)                     (None, 16, 16, 728)  0           block9_sepconv3_bn[0][0]         \n",
      "                                                                 add_7[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_8[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block10_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block10_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv2_act (Activatio (None, 16, 16, 728)  0           block10_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv2 (SeparableConv (None, 16, 16, 728)  536536      block10_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv2_bn (BatchNorma (None, 16, 16, 728)  2912        block10_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv3_act (Activatio (None, 16, 16, 728)  0           block10_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv3 (SeparableConv (None, 16, 16, 728)  536536      block10_sepconv3_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block10_sepconv3_bn (BatchNorma (None, 16, 16, 728)  2912        block10_sepconv3[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_9 (Add)                     (None, 16, 16, 728)  0           block10_sepconv3_bn[0][0]        \n",
      "                                                                 add_8[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_9[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block11_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block11_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv2_act (Activatio (None, 16, 16, 728)  0           block11_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv2 (SeparableConv (None, 16, 16, 728)  536536      block11_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv2_bn (BatchNorma (None, 16, 16, 728)  2912        block11_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv3_act (Activatio (None, 16, 16, 728)  0           block11_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv3 (SeparableConv (None, 16, 16, 728)  536536      block11_sepconv3_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block11_sepconv3_bn (BatchNorma (None, 16, 16, 728)  2912        block11_sepconv3[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_10 (Add)                    (None, 16, 16, 728)  0           block11_sepconv3_bn[0][0]        \n",
      "                                                                 add_9[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_10[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block12_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block12_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv2_act (Activatio (None, 16, 16, 728)  0           block12_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv2 (SeparableConv (None, 16, 16, 728)  536536      block12_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv2_bn (BatchNorma (None, 16, 16, 728)  2912        block12_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv3_act (Activatio (None, 16, 16, 728)  0           block12_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv3 (SeparableConv (None, 16, 16, 728)  536536      block12_sepconv3_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block12_sepconv3_bn (BatchNorma (None, 16, 16, 728)  2912        block12_sepconv3[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_11 (Add)                    (None, 16, 16, 728)  0           block12_sepconv3_bn[0][0]        \n",
      "                                                                 add_10[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv1_act (Activatio (None, 16, 16, 728)  0           add_11[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv1 (SeparableConv (None, 16, 16, 728)  536536      block13_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv1_bn (BatchNorma (None, 16, 16, 728)  2912        block13_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv2_act (Activatio (None, 16, 16, 728)  0           block13_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv2 (SeparableConv (None, 16, 16, 1024) 752024      block13_sepconv2_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block13_sepconv2_bn (BatchNorma (None, 16, 16, 1024) 4096        block13_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_4 (Conv2D)               (None, 8, 8, 1024)   745472      add_11[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block13_pool (MaxPooling2D)     (None, 8, 8, 1024)   0           block13_sepconv2_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_4 (BatchNor (None, 8, 8, 1024)   4096        conv2d_4[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "add_12 (Add)                    (None, 8, 8, 1024)   0           block13_pool[0][0]               \n",
      "                                                                 batch_normalization_4[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv1 (SeparableConv (None, 8, 8, 1536)   1582080     add_12[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv1_bn (BatchNorma (None, 8, 8, 1536)   6144        block14_sepconv1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv1_act (Activatio (None, 8, 8, 1536)   0           block14_sepconv1_bn[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv2 (SeparableConv (None, 8, 8, 2048)   3159552     block14_sepconv1_act[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv2_bn (BatchNorma (None, 8, 8, 2048)   8192        block14_sepconv2[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block14_sepconv2_act (Activatio (None, 8, 8, 2048)   0           block14_sepconv2_bn[0][0]        \n",
      "==================================================================================================\n",
      "Total params: 20,861,480\n",
      "Trainable params: 0\n",
      "Non-trainable params: 20,861,480\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "conv_base.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "conv_base.trainable = True\n",
    "\n",
    "set_trainable = False\n",
    "for layer in conv_base.layers:\n",
    "    if layer.name == 'block14_sepconv1':\n",
    "        set_trainable = True\n",
    "    if set_trainable:\n",
    "        layer.trainable = True\n",
    "    else:\n",
    "        layer.trainable = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(loss='categorical_crossentropy',\n",
    "              optimizer=optimizers.RMSprop(lr=1e-5),\n",
    "              metrics=['acc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/30\n",
      " - 62s - loss: 0.7732 - acc: 0.7778 - val_loss: 0.5693 - val_acc: 0.8266\n",
      "\n",
      "Epoch 00001: val_loss improved from inf to 0.56932, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 2/30\n",
      " - 55s - loss: 0.7986 - acc: 0.7786 - val_loss: 0.5315 - val_acc: 0.8317\n",
      "\n",
      "Epoch 00002: val_loss improved from 0.56932 to 0.53153, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 3/30\n",
      " - 55s - loss: 0.7162 - acc: 0.8084 - val_loss: 0.5406 - val_acc: 0.8226\n",
      "\n",
      "Epoch 00003: val_loss did not improve from 0.53153\n",
      "Epoch 4/30\n",
      " - 54s - loss: 0.7177 - acc: 0.8066 - val_loss: 0.5511 - val_acc: 0.8338\n",
      "\n",
      "Epoch 00004: val_loss did not improve from 0.53153\n",
      "Epoch 5/30\n",
      " - 56s - loss: 0.7210 - acc: 0.7938 - val_loss: 0.5409 - val_acc: 0.8221\n",
      "\n",
      "Epoch 00005: val_loss did not improve from 0.53153\n",
      "Epoch 6/30\n",
      " - 55s - loss: 0.6589 - acc: 0.8127 - val_loss: 0.5260 - val_acc: 0.8392\n",
      "\n",
      "Epoch 00006: val_loss improved from 0.53153 to 0.52603, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 7/30\n",
      " - 55s - loss: 0.6894 - acc: 0.7991 - val_loss: 0.5115 - val_acc: 0.8445\n",
      "\n",
      "Epoch 00007: val_loss improved from 0.52603 to 0.51145, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 8/30\n",
      " - 55s - loss: 0.6279 - acc: 0.8192 - val_loss: 0.5166 - val_acc: 0.8447\n",
      "\n",
      "Epoch 00008: val_loss did not improve from 0.51145\n",
      "Epoch 9/30\n",
      " - 55s - loss: 0.6781 - acc: 0.8100 - val_loss: 0.4828 - val_acc: 0.8457\n",
      "\n",
      "Epoch 00009: val_loss improved from 0.51145 to 0.48277, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 10/30\n",
      " - 56s - loss: 0.6103 - acc: 0.8211 - val_loss: 0.5030 - val_acc: 0.8389\n",
      "\n",
      "Epoch 00010: val_loss did not improve from 0.48277\n",
      "Epoch 11/30\n",
      " - 55s - loss: 0.6517 - acc: 0.8150 - val_loss: 0.4947 - val_acc: 0.8548\n",
      "\n",
      "Epoch 00011: val_loss did not improve from 0.48277\n",
      "Epoch 12/30\n",
      " - 55s - loss: 0.6105 - acc: 0.8232 - val_loss: 0.4774 - val_acc: 0.8477\n",
      "\n",
      "Epoch 00012: val_loss improved from 0.48277 to 0.47735, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 13/30\n",
      " - 55s - loss: 0.5907 - acc: 0.8278 - val_loss: 0.4963 - val_acc: 0.8480\n",
      "\n",
      "Epoch 00013: val_loss did not improve from 0.47735\n",
      "Epoch 14/30\n",
      " - 55s - loss: 0.5980 - acc: 0.8205 - val_loss: 0.4733 - val_acc: 0.8487\n",
      "\n",
      "Epoch 00014: val_loss improved from 0.47735 to 0.47326, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 15/30\n",
      " - 55s - loss: 0.5924 - acc: 0.8322 - val_loss: 0.5043 - val_acc: 0.8419\n",
      "\n",
      "Epoch 00015: val_loss did not improve from 0.47326\n",
      "Epoch 16/30\n",
      " - 54s - loss: 0.5982 - acc: 0.8320 - val_loss: 0.4826 - val_acc: 0.8472\n",
      "\n",
      "Epoch 00016: val_loss did not improve from 0.47326\n",
      "Epoch 17/30\n",
      " - 55s - loss: 0.5659 - acc: 0.8325 - val_loss: 0.4730 - val_acc: 0.8487\n",
      "\n",
      "Epoch 00017: val_loss improved from 0.47326 to 0.47299, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 18/30\n",
      " - 54s - loss: 0.5927 - acc: 0.8250 - val_loss: 0.4996 - val_acc: 0.8394\n",
      "\n",
      "Epoch 00018: val_loss did not improve from 0.47299\n",
      "Epoch 19/30\n",
      " - 55s - loss: 0.5113 - acc: 0.8472 - val_loss: 0.4699 - val_acc: 0.8407\n",
      "\n",
      "Epoch 00019: val_loss improved from 0.47299 to 0.46994, saving model to dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5\n",
      "Epoch 20/30\n",
      " - 55s - loss: 0.5291 - acc: 0.8453 - val_loss: 0.4804 - val_acc: 0.8412\n",
      "\n",
      "Epoch 00020: val_loss did not improve from 0.46994\n",
      "Epoch 21/30\n",
      " - 55s - loss: 0.5338 - acc: 0.8416 - val_loss: 0.4778 - val_acc: 0.8501\n",
      "\n",
      "Epoch 00021: val_loss did not improve from 0.46994\n",
      "Epoch 22/30\n",
      " - 54s - loss: 0.5250 - acc: 0.8472 - val_loss: 0.5107 - val_acc: 0.8392\n",
      "\n",
      "Epoch 00022: val_loss did not improve from 0.46994\n",
      "Epoch 23/30\n",
      " - 57s - loss: 0.5287 - acc: 0.8445 - val_loss: 0.4776 - val_acc: 0.8460\n",
      "\n",
      "Epoch 00023: val_loss did not improve from 0.46994\n",
      "Epoch 24/30\n",
      " - 55s - loss: 0.4786 - acc: 0.8606 - val_loss: 0.4950 - val_acc: 0.8533\n",
      "\n",
      "Epoch 00024: val_loss did not improve from 0.46994\n",
      "Epoch 25/30\n",
      " - 55s - loss: 0.4851 - acc: 0.8612 - val_loss: 0.4720 - val_acc: 0.8467\n",
      "\n",
      "Epoch 00025: val_loss did not improve from 0.46994\n",
      "Epoch 26/30\n",
      " - 55s - loss: 0.4935 - acc: 0.8509 - val_loss: 0.4742 - val_acc: 0.8516\n",
      "\n",
      "Epoch 00026: val_loss did not improve from 0.46994\n",
      "Epoch 27/30\n",
      " - 56s - loss: 0.4720 - acc: 0.8662 - val_loss: 0.4747 - val_acc: 0.8417\n",
      "\n",
      "Epoch 00027: val_loss did not improve from 0.46994\n",
      "Epoch 28/30\n",
      " - 55s - loss: 0.5023 - acc: 0.8456 - val_loss: 0.4911 - val_acc: 0.8492\n",
      "\n",
      "Epoch 00028: val_loss did not improve from 0.46994\n",
      "Epoch 29/30\n",
      " - 55s - loss: 0.4838 - acc: 0.8588 - val_loss: 0.4791 - val_acc: 0.8501\n",
      "\n",
      "Epoch 00029: val_loss did not improve from 0.46994\n",
      "Epoch 30/30\n",
      " - 56s - loss: 0.4971 - acc: 0.8563 - val_loss: 0.4817 - val_acc: 0.8508\n",
      "\n",
      "Epoch 00030: val_loss did not improve from 0.46994\n"
     ]
    }
   ],
   "source": [
    "from keras.callbacks import ModelCheckpoint   \n",
    "\n",
    "checkpointer = ModelCheckpoint(filepath='dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5', \n",
    "                               verbose=1, \n",
    "                               save_best_only=True)\n",
    "history = model.fit_generator(\n",
    "      train_generator,\n",
    "      steps_per_epoch=100,\n",
    "      epochs=30,\n",
    "      validation_data=validation_generator,\n",
    "      validation_steps=64, \n",
    "      callbacks=[checkpointer], \n",
    "      verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.load_weights('dogClassify.pretrained.finetuning.augmentation.model.weights.best.hdf5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = history.history['acc']\n",
    "val_acc = history.history['val_acc']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "epochs = range(len(acc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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by/eJUXQr+rxQIwxkXPJJZcwe/ZsfvrpJwBycnLYuHEjPXv2PNRvPiMjg1NPPZW33nqr1Po5OTl06tQJgP379zNo0CDS09O5/PLL2b9//6F0N91006FhmR966CEAJkyYwMaNG+nTpw99+vQBIC0tjW3btgHwxBNP0KlTJzp16nRoWOacnBzat2/PDTfcQMeOHenbt+9h+wlmyZIldO/enfT0dC666CJ27NhxaP8dOnQgPT390EBvH3/88aFJZLp27cru3bvD/myDSYo6/dGjD6/TBxsn35hw3H47RHpCqC5dwIuXQTVp0oRu3brx3nvvccEFFzB9+nQuv/xyRIQ6derwxhtvcMQRR7Bt2za6d+/OwIEDy5wn9tlnn6VevXosW7aMZcuWkZGRcei90aNHc9RRR1FQUMA555zDsmXL+O1vf8sTTzzB3Llzadq06WHbWrhwIS+//DJffPEFqsoZZ5xBr169aNy4MWvWrGHatGk8//zzXHbZZbz++uvljo9/1VVX8fTTT9OrVy8efPBBHn74YcaPH8+YMWNYv349tWvXPlSlNG7cOCZOnEiPHj3Ys2cPderUCeHTrlhSlPRtnHxjEltgFU9g1Y6qcu+995Kens65557Ld999x5YtW8rczieffHIo+Kanp5Oenn7ovRkzZpCRkUHXrl1Zvnx5hYOpzZs3j4suuoj69evToEEDLr74Yj799FMAWrduTZcuXYDyh28GN77/zp076dWrFwBXX301n3zyyaE8ZmVlMXny5EN3/vbo0YM777yTCRMmsHPnzojfEZwUJX1wAd6CvDGVU16JPJouvPBC7rzzThYtWsT+/fsPldCnTJlCXl4eCxcupGbNmqSlpQUdTjlQsKuA9evXM27cOBYsWEDjxo0ZOnRohdspb1yyomGZwQ3NXFH1Tln+9a9/8cknnzBr1iweeeQRli9fzogRIzjvvPN455136N69O//+979p165dWNsPJilK+saYxNagQQN69+7Ntddee1gD7q5duzj66KOpWbMmc+fOZUOwSa4DnHXWWYcmP//qq69YtmwZ4IZlrl+/PkceeSRbtmzh3XeL53Nq2LBh0Hrzs846izfffJN9+/axd+9e3njjDX7+85+HfGxHHnkkjRs3PnSV8Oqrr9KrVy8KCwv59ttv6dOnD48//jg7d+5kz549fP3115x66qncfffd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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(epochs, acc, 'bo', label='Training acc')\n",
    "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 对曲线进行平滑处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gveoCQ36daWqoF9SEn7w3xlnnMHrr79e7f7nzZtH8+bNa9y+eGdB35h6UBclOLZv307Lli059thjAWjZsiVnnHEGAOnp6dx///306dOH7OxsvvjiCy655BLat2/Pc889B7iRIPfccw9du3YlMzOT2bNnV7l8woQJLFy4kKysLB5//HHA9a6HDh1Khw4d+O1vf1vWtg8++IA+ffrQs2dPrr32WoqLiwH417/+RceOHenfvz9vvvlmhWM6dOgQDz/8MLNnzyYrK4vZs2czceJExo0bx8UXX8zPf/5z8vPzOf/88+nZsyc9e/bks88+A9yXUteuXQH3K+Tqq6+utG3p6el899135Ofn06lTJ2699Va6dOnCxRdfzIEDBwBYsmQJ3bp1o0+fPmXvRaji4mIGDRpEz549yczM5O233y5b9/LLL9OtWze6d+/ODTfcAMDOnTu56qqr6N69O927dy9rd71T1QZ1O+ecc7SheOUV1XbtVEXc31deiXWLTEOyevVq39uKqLo+/tE3kZq//t69e7V79+7aoUMH/eUvf6kff/xx2bp27drp1KlTVVX1zjvv1MzMTP3hhx/022+/1VatWqmq6uuvv66DBw/WkpIS3bFjh7Zp00a3bdsWdnlOTo5edtllZa/xt7/9TTMyMrSoqEgPHDigbdu21S1btmhhYaGef/75WlxcrKqqU6ZM0UceeUQPHDigaWlpum7dOi0tLdVrr732qP0F7/f2228ve/y73/1Oe/bsqfv371dV1X379umBAwdUVXXdunUaiBmbNm3SLl26VNm2wHtTWFiomzZt0pSUFF22bJmqql577bU6Y8YMVVXt0qWLfvrpp6qqeu+995btN9jhw4d1z549qqpaWFio7du319LSUv3yyy/1pz/9qRYWFqqq6q5du1RV9brrrtPHH39cVVVLSkq0qKio+g85jMr+7eGum6o2xtronTAiqaljTHUiuYjPrxNOOIGlS5eycOFCcnJyGDFiBFOmTGHs2LEADB8+HIDMzEyKi4tp1qwZzZo1IzU1laKiIj755BNGjRpFSkoKp556KgMGDGDJkiVhl594YsWq6IMGDeKkk04CoHPnzmzevJmioiJWr15Nv379ANd779OnD1999RUZGRl06NABgDFjxjBt2jRfxzp8+HCOO+44wF0UN378ePLy8khJSWHdunWVPqeytoWmvzIyMsjKygLgnHPOIT8/n6KiIvbu3Uvfvn0BuP7663n33Xcr7F9Vuf/++1mwYAGNGjXim2++YefOncyfP59rrrmGli1bAnDKKacAMH/+fF5++WUAUlJSytpW3yzoh1HVz3EL+iZSkydXfhFfbUtwpKSkMHDgQAYOHEhmZiYvvfRSWdAPpH0aNWpUdj/wuKSkBA1zYWa45ZUJ3m9KSkrZfocMGcJrrx1Vhou8vLwaDzds2rRp2f3HH3+cU089leXLl1NaWkpqaqrvtlW3zYEDB3wf/8yZMyksLGTp0qU0btyY9PR0Dh48iKo26KG8ltMPwypimmiqi4v41q5dy9dfl9cvzMvLo127dr6ff8EFFzB79myOHDlCYWEhCxYsoHfv3mGXN2vWjL1791a73/POO49PP/2U9evXA7B//37WrVtHx44d2bRpExs2bACo8KUQUN3r7Nmzh9NPP51GjRoxY8YMjhw54vuY/Tj55JNp1qwZ//nPfwCYNWtW2Hb85Cc/oXHjxuTk5LDZ+yk3aNAg5syZw65duwDYvXt32fJnn30WgCNHjvDDDz9Etd1+WdAPwypimmgbPRry86G01P2t7S/G4uJibrzxRjp37ky3bt1YvXo1EydO9P38q666quxk40UXXcSjjz7KaaedFnZ5t27dOOaYY+jevXvZidzKtGrViunTpzNq1Ci6devGeeedx1dffUVqairTpk3jsssuo3///mG/oC688EJWr15ddiI31G233cZLL73Eeeedx7p16476FRAtL7zwAuPGjaNPnz6oaqWpmNGjR5Obm0t2djYzZ86kY8eOAHTp0oUHHniAAQMG0L17d+6++24AnnjiCXJycsjMzOScc85h1apVUW+3H1Z7JwyrqWOqs2bNGjp16hTrZpg6UFxczAknnADAlClT2L59O0888USMW1Wusn97VnunlqymjjHJ67333iMrK4uuXbuycOFCHnzwwVg3KWrsRG4VrKaOMclpxIgRjBgxItbNqBPW0zfGmCRiQd8YY5KIBX1jjEkivoK+iAwVkbUisl5EJlSy/nERyfNu60SkKGjdoyKySkTWiMiT0pCvWjDGmARXbdAXkRTgGeBSoDMwSkQ6B2+jqnepapaqZgFPAW96z+0L9MNNiN4V6AUMiOoRGJPEErG0cm32M3fuXKZMmVLpdoEhmOEUFRUxderUssd+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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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um3bNj1w4IAOHTpU33jjDc3KytJhw4aVLP/TTz+pqmq7du107969ZeYFqu/Uyu2BTQGvc715hxGRZKAz8FHA7AQRyRKRz0Xk4krWu95bJis/P99HkcKL33TN1ulr6kK0pla+/PLLeeWVVwB4+eWXGTVqFOASrY0aNYrevXtz6623ljkbqMinn37KmDFjAErSHoOr4E6aNInU1FSGDRvG5s2b2bp1a5Xbqix1cmXfQWUyMzPJyMggMTGR+Ph4xo4dy+LFi+nSpQvr1q3jpptu4r333uPoo48GIDU1lbFjxzJz5kzi4+t2kKWfrVWUE7WyhD2jgVdVNTD9XUdVzRORLsBHIvKtqq4tszHVacA0cLl3fJQpIlmnb/T5y19C87nFqZUzMjJISUlhxowZjBs3Dgh9auXyWTSXLVvmK7Vy+/btad26Nd988w1z587l2WefBeCee+5h6NChvPHGG+Tk5JCRkVHttir6vFmzZpGfn8+SJUto3LgxnTp1Yu/evVVup6rvxE8K5+q206pVK77++mvef/99nnrqKV5++WWef/553nnnHRYvXsy8efN48MEHWb58eZ0Ffz81/VwgsJcoCcirZNnRQJlfXFXzvMd1wCKgb9CljBLW6WvqQrSmVgYYPXo0jzzyCDt37iQlJQVwNf327V3jgp9cOIMHDy5JizwroNNs586dHHvssTRu3JiFCxeW1Myr2r/KUicHa8CAAfzrX/9i+/btFBUVMXv2bIYMGcL27ds5dOgQI0eO5MEHH2Tp0qUcOnSITZs2MXToUB555BEKCgpK+kbqgp+gnwl0FZHOInIELrAfNgpHRE4CWgGfBcxrJSJHes/bAIOBim93EwMstYOpC4WFhVx99dUlHX3Z2dncd999vte/5JJLSE1NpU+fPpx55pllUitXND81NbUktXJxR2NFAlMrp6amMnDgQL7//nsSEhJKUiufdtppVR6gLrvsMubMmcPll19eMu/222/nrrvuYvDgwb5y6D/++OM89dRTnHLKKezcubNk/tixY8nKyiI9PZ1Zs2bRvXt3AFq3bs3gwYPp3bs3EydOLLOt8ePHU1RUREpKSkkzWmAN36927drx8MMPM3ToUPr06UO/fv246KKL2Lx5MxkZGaSlpTFu3DgefvhhioqKuOqqq0o6j2+99dY6vaG7r9TKInIe8BcgDnheVaeIyAO4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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def smooth_curve(points, factor=0.8):\n",
    "    smoothed_points = []\n",
    "    for point in points:\n",
    "        if smoothed_points:\n",
    "            previous = smoothed_points[-1]\n",
    "            smoothed_points.append(previous * factor + point * (1 - factor))\n",
    "        else:\n",
    "            smoothed_points.append(point)\n",
    "    return smoothed_points\n",
    "\n",
    "plt.plot(epochs,smooth_curve(acc), 'bo', label='Smoothed training acc')\n",
    "plt.plot(epochs,smooth_curve(val_acc), 'b', label='Smoothed validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs,smooth_curve(loss), 'bo', label='Smoothed training loss')\n",
    "plt.plot(epochs,smooth_curve(val_loss), 'b', label='Smoothed validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 模型评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test_acc: 0.8584558823529411\n"
     ]
    }
   ],
   "source": [
    "test_loss, test_acc = model.evaluate_generator(test_generator,steps=17, max_queue_size=50, workers=1, use_multiprocessing=True, verbose=0)\n",
    "print(\"test_acc:\",test_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 将所要预测的图片显示出来"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.image as mpimg\n",
    "imgDir = './dogImages/pre/'\n",
    "imgFoldName = 'dog'\n",
    "imgs = os.listdir(imgDir+imgFoldName)\n",
    "imgNum = len(imgs)\n",
    "imgFull = []\n",
    "for i in range (imgNum):\n",
    "    imgFull.append(imgDir+imgFoldName+\"/\"+imgs[i])\n",
    "fig = plt.figure(figsize=(20,5))\n",
    "for i in range(imgNum):\n",
    "    ax = fig.add_subplot(3, 12, i + 1, xticks=[], yticks=[])\n",
    "    ax.imshow(mpimg.imread(imgFull[i]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用自己的图片进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 3 images belonging to 2 classes.\n",
      "the predicted classes are  [  5 124  48]\n"
     ]
    }
   ],
   "source": [
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "pre_datagen = ImageDataGenerator(rescale=1./255)\n",
    "pre_generator = pre_datagen.flow_from_directory(\n",
    "        pre_dir,\n",
    "        target_size = (256,256),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical')\n",
    "score = model.predict_generator(pre_generator,steps=1)\n",
    "print('the predicted classes are ',np.argmax(score,axis=1)+1)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
